# coding=utf-8

# 列表就类似于其他语言的数组
# 列表的首地址不像是C语言数组的首地址那样，一个列表里能存放很多数据类型的变量，而数组只能存放一种类型，所以可以用数组的首地址来代表整个数组
# 列表根据需求动态分配和回首内存

"""创建列表的第一种方式"""
lst1 = ['hello', 'world', 666]#索引映射一个值，一个值可以对应多个索引；hello：0（-3），world：1（-2）,666:2（-1）
print(lst1)
print(lst1[-2])
print(lst1[-1])
print(lst1[0])

"""创建列表的第二种方式,使用内置函数list()"""
lst2 = list(['hello', 'world', 999])
print(lst2)
print(lst2[2])
# 实际上存储的是对象的引用，以第二种创建方式为例：
# hello和world和999所在的内存地址（id）都不同，然后建立一个列表list，给list分配一个连续的空间，这个连续的空间里按顺序存储hello、world和999的地址
# 给list分配的连续空间打包成一个新的模块，赋予一个新的id值，type类型为list，value值就是hello、world和999的集合
# 然后定义一个lst2，lst2指向list的id，存储对list模块的引用
